Digital equalization process and mechanism

ABSTRACT

A filter is created by sampling noise during an inter-frame gap ( 110 ) of a received signal, sampling a data frame preamble ( 115 ) from within a data frame ( 105 ) of the received signal, and computing filter coefficients based on the noise sampled during the inter-frame gap ( 110 ) and the data frame preamble ( 115 ) sampled from within the data frame ( 105 ).

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority from U.S. Provisional Application No.60/311,081, filed Aug. 10, 2001, and titled “Digital EqualizationProcess and Mechanism,” which is incorporated by reference.

TECHNICAL FIELD

This disclosure relates to data communications over noisy media withfrequency-dependent attenuation.

BACKGROUND

In data communications, wideband transmission may be used. However, thereceived signal may be impaired by noise and frequency-dependent channelattenuation. For example, an entire portion of the transmitted signalmay fall into an attenuation null and be severely attenuated. Inaddition, the intersymbol interference (ISI) could degrade the signalcausing a high bit error rate which may render an error correctionengine useless.

SUMMARY

In one general aspect, a filter is created by sampling noise during aninter-frame gap of a received signal, sampling a data frame preamblefrom within a data frame of the received signal, and computing filtercoefficients based on the noise sampled during the inter-frame gap andthe data frame preamble sampled from within the data frame.

Implementations may include one or more of the following features. Forexample, the filter may be structured and arranged to filter receivedsignals communicated across power lines.

The received signal may be synchronized to identify the data framepreamble. The received signal may be synchronized by sampling a randomlylocated portion of the received signal, generating a pre-filter based onthe randomly located portion of the sampled received signal, applyingthe pre-filter to the received signal, and identifying the data framepreamble based on the received signal after applying the pre-filter.

The filter coefficients may be computed by generating noise filtercoefficients from the noise sampled during the inter-frame gap,generating channel filter coefficients from the data frame preamblesampled from within the data frame, and generating the filtercoefficients based on the noise filter coefficients and the channelfilter coefficients. The noise filter coefficients may be generated fromthe noise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.

The channel filter coefficients may be generated by identifying channelfilter coefficients based on a threshold criteria and updating thechannel filter coefficients that are identified based on the thresholdcriteria. The channel filter coefficients may be updated by performingan excision algorithm. The channel filter coefficients may be updated bymodifying the channel filter coefficients. The channel filtercoefficients may be modified by reducing a magnitude of the channelfilter coefficients that are identified based on the threshold criteria.

Additionally or alternatively, the channel filter coefficients may beupdated by performing a smoothing algorithm. The channel filtercoefficients may be updated by replacing the channel filter coefficientswith replacement channel filter coefficients. In one implementation, thereplacement channel filter coefficients may include channel filtercoefficients not identified based on the threshold criteria.

In another general aspect, adaptively filtering a data frame of areceived signal includes generating coefficients for an adaptive filterbased on at least noise from within an inter-frame gap and a preamble ofthe data frame and filtering the data frame by applying the adaptivefilter to the data frame.

Implementations may includes one or more of the following features. Forexample, the data frame may be communicated across power lines such thatthe data frame may be filtered by applying the adaptive filter to thedata frame that is communicated across the power lines.

The coefficients for the adaptive filter may be generated by samplingnoise during an inter-frame gap of a received signal, sampling a dataframe preamble from within a data frame of the received signal, andcomputing filter coefficients based on the noise sampled during theinter-frame gap and the data frame preamble sampled from within the dataframe.

The received signal may be synchronized to identify the data framepreamble. The received signal may be synchronized by sampling a randomlylocated portion of the received signal, generating a pre-filter based onthe randomly located portion of the sampled received signal, applyingthe pre-filter to the received signal, and identifying the data framepreamble based on the received signal after applying the pre-filter.

The filter coefficients may be computed by generating noise filtercoefficients from the noise sampled during the inter-frame gap,generating channel filter coefficients from the data frame preamblesampled from within the data frame, and generating the filtercoefficients based on the noise filter coefficients and the channelfilter coefficients. The noise filter coefficients may be generated fromthe noise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.

The channel filter coefficients may be generated by identifying channelfilter coefficients based on a threshold criteria and updating thechannel filter coefficients that are identified based on the thresholdcriteria. The channel filter coefficients may be updated by performingan excision algorithm. The channel filter coefficients may be updated bymodifying the channel filter coefficients. The channel filtercoefficients may be modified by reducing a magnitude of the channelfilter coefficients that are identified based on the threshold criteria.

Additionally or alternatively, the channel filter coefficients may beupdated by performing a smoothing algorithm. The channel filtercoefficients may be updated by replacing the channel filter coefficientswith replacement channel filter coefficients. In one implementation, thereplacement channel filter coefficients may include channel filtercoefficients not identified based on the threshold criteria.

In another general aspect, a filter is derived from a combination ofcoefficients. The coefficients used to derive the filter includecoefficients derived from noise sampled during a period between dataframes and a received data frame preamble and coefficients derived fromthe received data frame preamble and a transmitted data frame preamble.

Implementations may include one or more of the following features. Forexample, the coefficients derived from the noise may include an averageof the coefficients derived from the noise over a period of time. Thecoefficients derived from the received data frame preamble may includean average of the coefficients derived from the data frame preamble overa period of time. The filter derived from the combination of thecoefficients may include an average of the filters derived from thecombination of the coefficients over a period of time. The coefficientsderived from the noise may include an average of the noise over a periodof time. The coefficients derived from the received data frame preamblemay include an average of the data frame preamble over a period of time.

In another general aspect, receiving a signal transmitted through atleast first and second communication paths over a single communicationmedium includes sampling the signal over the communication paths torealize a first sampling from the first communication path and a secondsampling from the second communication path, synchronizing the firstsampling and the second sampling, and combining the first sampling andthe second sampling to generate a signal representative of the signaltransmitted through the first and second communication paths.

Implementations may include one or more of the following features. Forexample, the first sampling and the second sampling may be synchronizedby independently synchronizing the first sampling and the secondsampling and adjusting for a delay difference between the first and thesecond communication paths based on the independent synchronization ofthe first sampling and the second sampling. The first communication pathmay include line-neutral path. The second communication path may includea neutral-ground path.

In another general aspect, pre-filtering a received signal to improvesynchronization includes sampling a randomly located portion of thereceived signal, generating a pre-filter based on the randomly locatedportion of the sampled received signal, applying the pre-filter to thereceived signal, and identifying a data frame preamble based on thereceived signal after applying the pre-filter to improvesynchronization.

Implementations may include one or more of the following features. Forexample, sampling the randomly located portion of the received signalmay include sampling within noise and generating the pre-filter mayinclude generating the pre-filter based on the sampled noise. Thereceived signal may include data and noise. A portion of the receivedsignal may be sampled at a randomly selected location.

In one implementation, the pre-filter may include a hybrid predictionfilter that produces a desired response as an inverse of a value relatedto a portion of the received signal.

These general and specific aspects may be implemented using a system, amethod, or a computer program, or any combination of systems, methods,or computer programs.

Other features will be apparent from the description and drawings, andfrom the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram of a data frame including time intervalsbefore and after the data frame.

FIG. 2 is a flow chart of an exemplary process for digital equalization.

FIG. 3 is a flow chart of an exemplary process for synchronizing anincoming bit stream.

FIG. 4 is a flow chart of an exemplary process for constructing afrequency-domain equalization and noise filter.

FIG. 5 is a flow chart of an exemplary process for computing a channelfilter.

FIG. 6 is a block diagram of a system capable of performing digitalequalization.

FIG. 7 is a block diagram of a system capable of performing datafiltering.

FIG. 8 is a block diagram of a system capable of performingpre-filtering to enhance synchronization.

FIG. 9 is a block diagram of a system capable of improving reception ofdata frames under multipath propagation.

Like reference symbols in the various drawings may indicate likeelements.

DETAILED DESCRIPTION

FIG. 1 illustrates a portion 100 of an exemplary data frame 105including time intervals before and after the frame, such as anInter-Frame Gap (IFG) 110. Data frame 105 may include bits transmittedover a communications system, including a preamble 115 and a dataportion 125. The preamble 115 may include a synchronization preamblehaving a number of bits that are at the beginning of each data frame105. Additionally or alternatively, preamble 115 may be located at thebeginning of a data block, which may include several data portions 125arranged in series (now shown). The preamble 115 may be used by areceiver to lock and to synchronize with the bit timing of atransmitter. A received signal may include any data, data gaps, andnoise received, such as, for example, data frame 105, IFG 110, noise120, preamble 115, and data 125.

IFG 110 may include a gap between data frames 105 in which data 125typically is not transmitted. IFG 110 may include noise 120, e.g.,resulting from a time interval with no transmitted data.

In general, a network system that transmits and receives datacommunications may detect the data frame 105 to perform processes suchas, for example, digital equalization and filtering. For example, it maybe desirable to construct noise filters and to instantaneously adapt theequalization and noise filters on a frame-by-fame basis. Byinstantaneously adapting the equalization and the noise filters on aframe-by-frame basis, the need for memory of the filter outside of thecurrent data frame 105 and dependency on the previous data frame 105 maybe reduced or eliminated altogether.

In one implementation, frequency-domain equalization may be used toretrieve the transmitted data over a noisy transmission channel withfrequency-dependent attenuation (e.g., impairments of white noise,periodic noise, multipath propagation, and different impedances). Afilter may be designed to reduce or eliminate the noise, correct for thechannel distortion and the channel attenuation, and/or compensate forthe ISI.

In this implementation, the desired equalization and filtering may beaccomplished by using the IFG 110 to sample the noise, and then use thecaptured noise and the preamble 115 to construct a filter (e.g., anoptimal Wiener filter).

FIG. 2 illustrates a process 200 for digital equalization. Process 200typically includes synchronizing an incoming data frame (step 210),constructing a frequency-domain equalization and noise filter (step220), and applying the filter to the frame from which it wasderived/constructed (step 230).

In general, synchronizing the incoming frame (step 210) includesreceiving a signal and locating a frame, namely, identifying thebeginning and/or the end of the frame. Various modulation schemes may beused in transmitting and receiving bit streams. In one exampleimplementation, a binary phase shift keying (BPSK) modulation scheme maybe used, however, other modulation schemes are also available forapplication to the digital equalization process.

For synchronization (step 210), the incoming signal may be over-sampled(e.g., by a factor of N) and an algorithm (e.g., a maximal likelihoodalgorithm) may be used to estimate the incoming bit value. The receivedbit sequence (e.g., a 64-bit preamble) then may be correlated to thepredefined and stored transmitted bit sequence and submitted to decisionlogic that may determine if the sequence corresponds to the predefinedtransmitted preamble. The synchronization process 210 may be performedat the receiving location of the incoming bit stream. For example, thesynchronization 210 may occur at a receiver circuit located at thereceiving location. Synchronization process 210 may be used to maintainproper bit timing at the receiver location. Synchronization process 210may involve locating a sync position (e.g., locating the preamble). Byidentifying the beginning and/or the end of the frame in thesynchronization (step 210), the IFG may be located and noise within theIFG may be sampled in step 220.

Constructing the frequency-domain equalization and noise filter (step220) may include using one or more samples of the noise in the IFG, thereceived preamble, and the transmitted preamble. Once the incoming framehas been synchronized (step 210), the noise may be sampled and one ormore filters may be computed and constructed. For instance, twocomplementary filters may be computed (e.g., a noise filter and achannel filter). A combination of the noise filter and the channelfilter may be used to generate a filter, such as a Wiener filter or someother filter capable of being used as an optimal filter. Additionallyand/or alternatively, the construction of the filter (step 220) mayinclude using an average of samples of the noise in the IFG, thereceived preamble, the transmitted preamble, and/or constructed filtersover a period of time.

Applying the filter to the frame from which it was derived (step 230)may include multiplying the filter coefficients by the incoming dataframe. Examples of the processes described by steps 210 and 220 aredescribed below in more detail with respect to FIGS. 3 and 4-5,respectively.

FIG. 3 is an expansion of the synchronization process 210 from FIG. 2.FIG. 3 typically includes sampling the incoming signal (step 310),estimating the incoming bit value (step 320), and correlating thereceived bit sequence (e.g., the 64-bit preamble) to a predefined bitsequence that was transmitted as the preamble (step 330).

Over-sampling the incoming signal (step 310) may include over-samplingthe incoming signal by a factor of N. Over-sampling of the signal (step310) may be performed by an analog-to-digital converter (ADC), or byanother circuit capable of over-sampling an incoming signal. Estimatingthe incoming bit value (step 320) may include demodulating theover-sampled incoming data into a single binary bit stream. Correlatingthe received bit sequence (step 330) may include correlating theover-sampled incoming data stream against a stored copy of thetransmitted bit wave form. For example, in step 330, the incoming datastream may be correlated against a sine wave. For a more detaileddescription of the synchronization process 210, section 5.1 Synchronizeris provided below, which includes subsections 5.1.1 Demodulator, 5.1.1.1Correlator, 5.1.1.2 Threshold Function, and 5.1.2 Synchronization.

FIG. 4 illustrates one implementation of the process 220 of FIG. 2 forconstructing a frequency-domain equalization and noise filter.Constructing the filter typically includes identifying noise samples,the received preamble, and predefined transmitted preamble (step 410),computing a noise filter (step 420), a channel filter (step 430), andultimately a filter that is applied to the data frame (step 440). For amore detailed description of the filter construction process, section5.2 Filter is provided below with subsections 5.2.1 Noise Filter,5.2.1.1 Noise Filter Computation, 5.2.2 Channel Filter, 5.2.2.1 RawChannel Filter Computation, 5.2.2.2 Excision, and 5.2.2.3 Smoothing.

A channel filter may be computed (step 430) as described more fully withrespect to FIG. 5. Computing a channel filter typically includescomputing the raw coefficients (step 510), performing excision (step520) and performing smoothing (step 530). For a more detaileddescription of the channel filter construction process, sections 5.2.2.1Raw Channel Filter Computation, 5.2.2.2 Excision, and 5.2.2.3 Smoothingare provided below.

FIG. 6 illustrates a system for digital equalization. The digitalequalization system typically receives an incoming signal 610 (e.g., ananalog signal) and applies a receiver/over-sampler module (e.g., ananalog-to-digital converter) 620, a synchronizer 630, a demodulatormodule 640, a synchronization module 650, and a filter coefficientmodule 660.

5.1 Synchronizer 630

The synchronizer 630 generally is capable of detecting the preamble ofthe incoming data The synchronizer 630 typically includes twocomponents: a demodulation/correlation module (maximum likelihood at thebit level) and a synchronization module 650 (maximum likelihood for thepreamble).

5.1.1 Demodulator Module 640

The demodulator module 640 generally is capable of convertingover-sampled incoming data into a single binary bitstream of “ones” and“zeroes” (i.e., BitOut). The demodulator module 640 typically includes acorrelator 641 and a threshold detector 643.

5.1.1.1 Correlator 641

The sampled data stream from the analog-to-digital converter (ADC) 620goes into the correlator 641. For each new sample S_(j), N samples arecorrelated against a stored copy of the transmitted bit waveform 642(e.g., in one implementation, a sine wave is used). Thus, forcomparison, the transmitted bit waveform 642 is effectively moved acrossthe input data stream like a sliding window, for example, effecting thelogic of Equations 1 and 2:

$\begin{matrix}{{{BitWeight} = {\sum\limits_{i = 0}^{N - 1}\;{{{receivedBit}\;\lbrack i\rbrack} \times {{transmittedBit}\;\lbrack i\rbrack}}}}{with}} & ( {{Equation}\mspace{14mu} 1} ) \\{{{transmittedBit}\lbrack n\rbrack} = \{ {{\begin{matrix}{\sin( {2\pi\;{n/N}} )} & {{fortransmitting}{\mspace{11mu}\;}1} \\{- {\sin( {2\pi\;{n/N}} )}} & {{fortransmitting}\mspace{14mu} 0}\end{matrix}n} = {{0\mspace{11mu}\ldots\mspace{11mu} N} - 1}} } & ( {{Equation}\mspace{14mu} 2} )\end{matrix}$

-   -   and where N is the over-sampling rate.

The BitWeight generated by the correlator 641 generally has a new valuefor every sample S_(j); it is forwarded to a decision logic (thethreshold detector 643) that determines if the transmitted bit is “0” or“1” based on the correlation of the sampled region to the pre-storedtransmitted bit preamble as reflected by the BitWeight.

5.1.1.2 Threshold Function

The resultant BitWeight is passed to the threshold detector 643 to beprocessed. The values are compared to defined max and min thresholds(both defaulted to “0”).

The threshold detector 643 will convert each BitWeight value into onelogical data bit value. This process is shown in the following equation:

If (BitWeight > max_threshold)   BitOut = 1;        //the received bitis a “1” If (BitWeight < min_threshold)   BitOut = 0;        //thereceived bit is a “0” Else   BitOut = random generated 0 or 1 //nodecision can be made                          (Equation 3)

5.1.2 Synchronization Module 650

The synchronization module 650 detects the beginning and/or the end ofthe frame. For each new sample S_(j), the receiver 651 receives theBitOut sequence and the comparing device 653 computes the Hammingdistance, d_(j), between the received symbol sequence (receivedpreamble) and the transmitted symbol sequence (transmitted preamble).The smallest value of d_(j) for all samples S_(j) is called the minimumdistance d_(minfolding), which may be used to indicate the frameposition (e.g., a maximum likelihood detection). The position j forwhich the Hamming distance is lowest generally is considered the syncposition.

The value of the Hamming distance may be passed to the folding functionmodule 654 which may convert the Hamming distance from a [0 . . . 64]range number (e.g., a number corresponding to the number of bits in thepreamble) into “Folded Hamming distance” which includes a [0 . . . 32]range number according to the following equation:

if Hamming distance > 32 then   Folded Hamming distance = 64 − Hammingdistance else   Folded Hamming distance = Hamming distance.

The folding function module 654 enables the detection of both positiveand negative phases of the transmitted signal. For example, a phaseinversion may occur if the transmitter or receiver is incorrectlyplugged into a power outlet. In this instance, the transmitted bits maybe inverted in sign causing a “match” condition to correspond to maximumHamming distance values instead of the minimum Hamming distance values.By folding the Hamming distance, both positive and negative phases ofthe transmitted signal may be detected by examining the minimum Hammingdistance values. The position for which the Folded Hamming distance isminimal d_(minfolding) may be considered as the sync position.

5.2 Filter Coefficient Module 660

The Filter Coefficient Module 660 generates frequency-domaincoefficients that will be used to filter the received data stream thatare useful in recovering the information content of the transmitteddata. In one implementation, for example, the filter coefficient module660 also may be implemented using an Adaptive Filter Coefficient Engine(AFCE).

In one implementation, the coefficient generation includes determinationof channel, noise filters, and ultimately the complex multiplication(i.e., frequency-domain operation) of the channel and noise filters, asdescribed below with respect to Equation 4.FilterCoeffs(f)=ChannelFilter(f)×NoiseFilter(f)  (Equation 4)

5.2.1 Noise Filter 661

The noise filter generation module 661 may include a filter capable ofminimizing the effect of the noise generated by the transmissionchannel. The noise filter generation module 661 generally is based, atleast in part, on a sampling of noise from within the quiet period whereno data is transmitted, which generally precedes the preamble. It alsomay be based on data within the preamble identified throughsynchronization. The sampled noise and/or preamble generally arecombined to construct the noise filter itself. This approach is valid aslong as the frame length is short enough that the noise could beconsidered as quasistationary for the frame duration. For the purposesof this example implementation, it may be assumed that the noise isuncorrelated to the data and that the noise is consideredquasistationary for the frame duration.

5.2.1.1 Noise Filter Computation

The noise filter may be computed based on equation 5:

$\begin{matrix}{{{NoiseFilter}(f)} = \frac{{{{received}\mspace{14mu}{{preamble}(f)}}}^{2} - {{{noise}(f)}}^{2}}{{{{received}\mspace{14mu}{{preamble}(f)}}}^{2}}} & ( {{Equation}\mspace{14mu} 5} )\end{matrix}$

-   -   where |received preamble(f)|² represents the power of individual        frequency components comprising the discrete spectrum for the        received preamble and where |noise(f)|² may be determined using        equation 6:        |noise(f)|²=min(|noiseRx _(—)1(f)|², |noiseRx _(—)2(f)|,² . . .        , |noisei Rx_(—) k(f)|²)  (Equation 6)    -   where |noiseRx_(f)|², |noiseRx_(—)2(f)|², . . . ,        |noiseRx_k(f)|² are obtained based on noise snapshots from        within the IFG, and k is the number of noise blocks that are        captured. As equation 6 is based on the minimum of the power of        the individual noise frequency components of the noise streams,        it represents a conservative approach (i.e., versus using an        average) to characterizing the noise for the noise filter        computation. If k is too large, the |noise(f)|² component may        tend toward “0” for all frequencies counteracting the effect of        this conservative characterization of noise. As such, k        generally is set to a relatively small value, e.g., 3.

5.2.2 Channel Filter 662

The channel filter 662 may be a filter capable of characterizing thechannel and compensating for the channel attenuation and distortion. Thechannel may be characterized by comparing the received preamble spectrumagainst the transmitted preamble spectrum. Then, the raw channel filtermay be computed by dividing the spectrum of the transmitted preamble bitsequence by the spectrum of the received preamble bit sequence.

Once the raw channel filter has been obtained, additionalsteps/processing may be performed to eliminate additional interference(e.g., the narrow band interference) and to increase the accuracy of theestimate in the presence of noise.

5.2.2.1 Raw Channel Filter Computation Module 6621

One possible equation for computing the raw channel filter is describedas follows. The channel filter 662 may be computed based onfrequency-domain division (i.e. complex number division) of theprestored/predetermined transmitter preamble by the received/detectedpreamble. This is illustrated in the following equation:

$\begin{matrix}{{{RawChannelFilter}(f)} = \frac{{prestored}\text{/}{predetermined}\mspace{14mu}{transmitted}\mspace{14mu}{{preamble}(f)}}{{received}\text{/}{detected}\mspace{14mu}{{preamble}(f)}}} & ( {{Equation}\mspace{14mu} 7} )\end{matrix}$

For instance, the raw channel filter may be modified by post-processingfunctions identified as “excision” 6622 and “smoothing” 6623. Theexcision processing 6622 reduces the gross anomalies of the spectrum,while the smoothing processing 6623 increases the accuracy of theestimate in the presence of noise.

In the implementation described below, excision is performed beforesmoothing. However, either could be performed independently, or theorder could be reversed.

5.2.2.2 Excision Module 6622

Excision 6622 may be used to significantly improve the signal-to-noiseratio by eliminating the narrow-band interference at the receiver.Several excision algorithms generally are known to those of ordinaryskill, as have been described. See Analysis of DFT-Based FrequencyExcision Algorithms for Direct-Sequence Spread-Spectrum Communications.IEEE Transactions on Communications, vol. 46, No. 8, August 1998.Jeffrey A. Young, and James S. Lehnert.

When using the excision algorithm, the frequency bin(s) to be excisedis/are generally identified according to their relative ranking under apredetermined ranking scheme, and the magnitude and method of excisionor notching is determined.

In one implementation, the frequency bins having a power value thatplaces them within a selectively high percentage (e.g., the top Mpercent) of the frequency bins are identified for excision, during whichthe power values for those frequency bins are reduced by a selectableamount or ratio (e.g., half). More specifically, according to oneexemplary implementation of the excision module 6622, power values forthe raw channel filter coefficients 6621 are calculated and sorted, andthe top M percent of the raw channel filter coefficients are selectedand divided by two.

An example implementation is illustrated in the following equation:

if (RawChannelFilter(f_(i)) * noiseFilter(f_(i))) in top M % then    ExcisedChannelFilter(f_(i)) = ExcisedChannelFilter(f_(i))/2   Else    ExcisedChannelFilter(f_(i)) = ExcisedChannelFilter(f_(i))              i = 0...size of the FFT filter − 1

In this implementation, the excised channel filter spectrum is subjectto a smoothing function following the excision.

5.2.2.3 Smoothing Module 6623

The smoothing function performed by smoothing module 6623 can besummarized by the following logic:

-   -   if the power of the |ExcisedChannelFilter(f_(i))|² component is        greater than the power of the |ExcisedChannelFilter(f_(i+1))|²        component, then the final channel filter for bin “i” will be        assigned the ExcisedChannelFilter(f_(i+1)) bin value.

An algorithm implementing this logic is as follows:

if|ExcisedChannelFilter(f_(i))|² ≦ |ExcisedChannelFilter(f_(i+1))|² channelFilter(f_(i)) = ExcisedChannelFilter(f_(i)) else channelFilter(f_(i)) = ExcisedChannelFilter(f_(i+1))

-   -   where f_(i) cover both the negative and the positive spectrum of        the signal.

In one implementation, following calculation of the noise filtercoefficients and the channel filter coefficients, a multiplier 663 maybe used to generate the ultimate coefficients by performing complexmultiplication of the channel and noise filter coefficients, asdescribed above with respect to equation 4, such that a filter may beconstructed using the filter computation module 670.

5.2.3 Data Filtering

FIG. 7 illustrates an overview of the system 700 used to generate andapply a filter. In one implementation, the overlap-save method may beused to filter the data. The overlap-save method performs a linearconvolution between a finite-length sequence (the channel filtercoefficients) and an infinite-length sequence (the data) byappropriately partitioning the data. This type of data filtering methodgenerally includes an input module 710, which receives the input datax(n). The input module 710 may concatenate new input data x(n) with oldinput data. The concatenated data may be sent to a first Fast FourierTransform (FFT) module 720, where it is used to produce an output X(f).

Component parts of the input data x(n) (e.g., a preamble (n) and noise(n)) may be received at a filter coefficient computation module 730. Thefilter coefficient computation module 730 also may receive, as input, acopy of the transmitted preamble 740. The filter coefficient computationmodule 730 computes the appropriate filters and sends its output to asecond FFT module 750, which outputs coeff (f). The output X(f) from thefirst FFT module 720 is multiplied with the output coeff (f) from thesecond FFT module 750 at multiplier module 760.

The output of multiplier module 760 Y(f) is received at an Inverse FFTmodule 770, where an inverse FFT process may be performed. The result ofthe inverse FFT process is saved in a buffer module 780 and the outputfiltered data y(n) is produced.

Additional improvement(s) and a lower Bit Error Rate may be obtained bypre-filtering the incoming raw data and/or adding additional hardwarethat further solves the multipath propagation problem.

6.1 Pre-Filtering

Pre-filtering may be performed independently and exclusively, or, inconjunction with of any other filtering processes, such as the filteringprocesses described above.

As described in section 5.2, the filter coefficient computation may beperformed by constructing a channel inverse. This computation generallyrequires synchronization on the raw signal. Indeed, if the signal isjammed or severely corrupted by noise (e.g., white noise, periodicnoise, etc.), the synchronizer could fail and the frame synchronizationmay not be detectable.

In one implementation, the raw data may be pre-filtered to improve thesynchronization capability and thus improve the filter/equalizerperformance (section 5.2). Indeed, since the filter/equalizer processuses the raw received preamble to compute the channel inverse, thecomputed filter coefficients will generally improve with improvements toestimates of the preamble position (the sync position).

More specifically, to pre-filter, the dead time between the blocks maybe used to sample the noise and to construct an adaptive noise-cancelingfilter that is helpful in making preamble bits more identifiable.

Several noise filters could be used for this purpose. For instance, inone implementation, a noise filter used for pre-filtering includes ahybrid version of a “Prediction” filter, where the desired response forthe adaptive filter is the inverse of the present input signal value.

FIG. 8 illustrates an example implementation of a pre-filtering system.The pre-filtering system of FIG. 8 receives an input signal u(t) that isreceived at delay module 810, and includes an adaptive filter module 820and a summation module 830.

In this implementation, the following notations are used forconvenience:

-   -   s=transmitted signal (uncorrupted by noise),    -   n=channel noise (white noise, periodic noise . . . ),    -   ñ=estimate of the channel noise,    -   u=input applied to the adaptive filter,    -   y=output of the adaptive filter,    -   d=desired response of the filter,    -   e=−(y+d)=estimation error.

This adaptive filter 820 predicts the inverse of the present value ofthe random input signal, even though past values of the signal supplythe input applied to the adaptive filter. The present value of thesignal serves the purpose of the desired response for the adaptivefilter 820.

When the filter adaptation algorithm (e.g., least mean square algorithm)is enabled, the adaptation process is designed to cancel the inputsignal u(t) by adjusting the filter coefficients such that y(t)=u(t)+thefilter output=“0”. Assuming that during this adaptation process, u(t)was selected such that it is equal to the noise in the transmissionchannel (i.e. u(t)=n(t)=the sampled noise during the dead time betweenthe frame(s)), the adaptation process will basically construct anoise-canceling filter that cancels the transmission channel noise suchthat y(t)=n(t)−ñ(t)≅0.

Once the adaptation process is complete, the adaptation algorithm may bedisabled and the obtained filter coefficients locked. Assuming that thenoise is quasistationary for the frame duration (see assumption above),the obtained filter could then be considered as a noise-canceling filterthat is continuously predicting the inverse of the noise in thetransmission channel y(t)=n(t)−ñ(t)≅0. Thus, when data is transmittedu(t)=s(t)+n(t) the filter will cancel the noise n(t) and let pass thetransmitted data such that y(t)=s(t)+n(t)−ñ(t)≅s(t).

In another implementation of a pre-filter, for example, if during theperiod of the preamble, u(t) is selected such that it is equal to thetransmitted preamble, then the adaptation process may construct anequalization filter.

6.2 Multipath Propagation

In one implementation, a modem may be designed to transmit on two paths(e.g., a first may be a Line-Neutral path and a second may be aNeutral-Ground path). In theory, the transmitted data (e.g., equalizedsignals) could be recovered by sampling either path. However, the twopaths may have different characteristics due to the difference in thepath loads (time-varying values), impedance differences, lengthdifferences, and/or noise levels. This frequency-selective fading of thetransmission medium could cause amplitude and delay distortion which maydegrade the system reliability beyond that expected. It therefore may bedifficult to determine which path is the best one to use to recover thetransmitted data, whether it is the first path, the second path, or acombination of both paths.

FIG. 9 illustrates one example implementation of a multipath propagationsystem capable of automatically determining which path or combination ofpaths is preferred, or optimal. The system may include structures thatautomatically probe/sample the paths (e.g., Line-Neutral 910 andNeutral-Ground 920), store the data (e.g., by using one or more buffers930 a, 930 b), and synchronize (e.g., using synchronizers 940 a, 940 b)on each path, independently. Further, once a synchronizer 940 a, 940 bhas been detected, the system automatically adjusts for the delaydifference between the paths by adjusting the read pointer in thebuffers 930 a, 930 b and then combines the data into a single datastream following gain adjustment module 950.

Indeed, assuming that the buffers are large enough, if we are able tosynchronize on both paths 910, 920 (discussed above in section 5.1), thedifference in the sync position typically is equal to the difference inthe path delays. Thus, the solution presents itself in two parts: first,the synchronizers may be used to compensate for the path delaydifferences, and second, the filter/equalizer discussed above in section5.2 may be used to compensate for the distortion. It will be understoodthat various modifications may be made without departing from the spiritand scope of the claims. For example, the order of the operations (pathselection and filtering/equalization) could be changed. Indeed, the datafiltering/equalization part could be done on each path independentlythen data could be combined.

If the attenuation/distortion on either path is too severe such that nosynchronization is possible, a single path solution may be realizedwithout any path combination. In another implementation, the addition of“combination thresholds” may refine this feature even further byenabling the two paths to be combined if and only if the quality of thereceived data on the paths is above a predefined level.

The described systems, methods, and techniques may be implemented indigital electronic and/or analog circuitry, computer hardware, firmware,software, or in combinations of these elements. Apparatus embodyingthese techniques may include appropriate input and output devices, acomputer processor, and a computer program product tangibly embodied ina machine-readable storage device for execution by a programmableprocessor. A process embodying these techniques may be performed by aprogrammable processor executing a program of instructions to performdesired functions by operating on input data and generating appropriateoutput. The techniques may be implemented in one or more computerprograms that are executable on a programmable system including at leastone programmable processor coupled to receive data and instructionsfrom, and to transmit data and instructions to, a data storage system,at least one input device, and at least one output device. Each computerprogram may be implemented in a high-level procedural or object-orientedprogramming language, or in assembly or machine language if desired; andin any case, the language may be a compiled or interpreted language.Suitable processors include, by way of example, both general and specialpurpose microprocessors. Generally, a processor will receiveinstructions and data from a read-only memory and/or a random accessmemory. Storage devices suitable for tangibly embodying computer programinstructions and data include all forms of non-volatile memory,including by way of example semiconductor memory devices, such asErasable Programmable Read-Only Memory (EPROM), Electrically ErasableProgrammable Read-Only Memory (EEPROM), and flash memory devices;magnetic disks such as internal hard disks and removable disks;magneto-optical disks; and Compact Disc Read-Only Memory (CD-ROM). Anyof the foregoing may be supplemented by, or incorporated in,specially-designed ASICs (application-specific integrated circuits).

Advantageous results still could be achieved if steps of the disclosedtechniques were performed in a different order and/or if components inthe disclosed systems were combined in a different manner and/orreplaced or supplemented by other components. For example, thetransmission medium may include a power line, a telephone line, a cableline, a digital subscriber line (DSL), an integrated services digitalnetwork (ISDN) line, a radio frequency (RF) medium, and/or othertransmission media. Additionally and/or alternatively, differentmodulation schemes are also available for application to the digitalequalization process. For example, a combination of modulation schemesmay be applied to different parts of the signal (e.g., one modulationscheme may be applied to the preamble and a different modulation schememay be applied to the remainder of the signal). In anotherimplementation, for example, in a multipath propagation implementation,different modulation schemes and/or combinations of different modulationschemes may be applied to each signal on the different communicationpaths. Accordingly, other implementations are within the scope of thefollowing claims.

What is claimed is:
 1. A method for creating a filter, the methodcomprising: receiving a signal including a data frame, and a gapoccurring before the data frame, the data frame including a data framepreamble, and the gap not including predetermined data; sampling noisereceived during reception of the gap of the received signal; samplingthe data frame preamble of the data frame of the received signal;computing, using at least one processor, filter coefficients based onthe noise sampled during reception of the gap and the data framepreamble sampled from the data frame; generating, based on the computedfilter coefficients, a filter; applying, in response to generation ofthe filter, the filter to the data frame of the received signal; andforwarding, in response to application of the filter to the data frameof the received signal, the filtered data frame.
 2. The method of claim1 wherein: receiving the signal comprises receiving signals communicatedacross power lines; and applying the filter to the first data frame ofthe received signal comprises applying the filter to the first dataframe of the received signal across the power lines.
 3. The method ofclaim 1 further comprising synchronizing the received signal to identifythe data frame preamble.
 4. The method of claim 3 wherein synchronizingthe received signal comprises: sampling a randomly located portion ofthe received signal; generating a pre-filter based on the randomlylocated portion of the sampled received signal; applying the pre-filterto the received signal; and identifying, in response to application ofthe pre-filter to the received signal, the data frame preamble.
 5. Themethod of claim 1 wherein computing the filter coefficients includes:generating noise filter coefficients from the noise sampled duringreception of the gap; generating channel filter coefficients from thedata frame preamble sampled from the data frame; and generating thefilter coefficients based on the noise filter coefficients and thechannel filter coefficients.
 6. The method of claim 5 wherein generatingthe noise filter coefficients comprises generating noise filtercoefficients from the noise sampled during reception of the gap and thedata frame preamble sampled from the data frame.
 7. The method of claim5 wherein generating the channel filter coefficients includes:identifying channel filter coefficients based on a threshold criteria;and updating the channel filter coefficients that are identified basedon the threshold criteria.
 8. The method of claim 7 wherein updating thechannel filter coefficients includes performing an excision algorithm.9. The method of claim 7 wherein updating the channel filtercoefficients includes modifying the channel filter coefficients.
 10. Themethod of claim 9 wherein modifying the channel filter coefficientsincludes reducing a magnitude of the channel filter coefficients thatare identified based on the threshold criteria.
 11. The method of claim7 wherein updating the channel filter coefficients includes performing asmoothing algorithm.
 12. The method of claim 7 wherein updating thechannel filter coefficients includes replacing the channel filtercoefficients with replacement channel filter coefficients.
 13. Themethod of claim 12 wherein the replacement channel filter coefficientsinclude channel filter coefficients not identified based on thethreshold criteria.
 14. A system for creating a filter, the systemcomprising at least one processor, wherein the at least one processor isconfigured to: receive a signal including a data frame, and a gapoccurring before the data frame, the data frame including a data framepreamble, and the gap not including predetermined data; sample noisereceived during reception of the gap of the received signal; sample thedata frame preamble of the data frame of the received signal; computefilter coefficients based on the noise sampled during reception of thegap and the data frame preamble sampled from the data frame; generate,based on the computed filter coefficients, a filter; apply, in responseto generation of the filter, the filter to the data frame of thereceived signal; and forward, in response to application of the filterto the data frame of the received signal, the filtered data frame. 15.The system of claim 14 wherein the at least one processor is configuredto: receive the signal by receiving signals communicated across powerlines; and apply the filter to the data frame of the received signal byapplying the filter to the data frame of the received signal across thepower lines.
 16. The system of claim 14 wherein the at least oneprocessor is further configured to synchronize the received signal toidentify the data frame preamble.
 17. The system of claim 16 wherein theat least one processor is configured to synchronize the received signalby: sampling a randomly located portion of the received signal;generating a pre-filter based on the randomly located portion of thesampled received signal; applying the pre-filter to the received signal;and identifying, in response to application of the pre-filter to thereceived signal, the data frame preamble.
 18. The system of claim 14wherein the at least one processor is configured to compute the filtercoefficients by: generating noise filter coefficients from the noisesampled during reception of the gap; generating channel filtercoefficients from the data frame preamble sampled from the data frame;and generating the filter coefficients based on the noise filtercoefficients and the channel filter coefficients.
 19. The system ofclaim 18 wherein the at least one processor is configured to generatethe noise filter coefficients by generating noise filter coefficientsfrom the noise sampled during reception of the gap and the data framepreamble sampled from the data frame.
 20. The system of claim 18 whereinthe at least one processor is configured to generate the channel filtercoefficients by: identifying channel filter coefficients based on athreshold criteria; and updating the channel filter coefficients thatare identified based on the threshold criteria.
 21. The system of claim20 wherein the at least one processor is configured to update thechannel filter coefficients by performing an excision algorithm.
 22. Thesystem of claim 20 wherein the at least one processor is configured toupdate the channel filter coefficients by modifying the channel filtercoefficients.
 23. The system of claim 22 wherein the at least oneprocessor is configured to modify the channel filter coefficients byreducing a magnitude of the channel filter coefficients that areidentified based on the threshold criteria.
 24. The system of claim 20wherein the at least one processor is configured to update the channelfilter coefficients by performing a smoothing algorithm.
 25. The systemof claim 20 wherein the at least one processor is configured to updatethe channel filter coefficients by replacing the channel filtercoefficients with replacement channel filter coefficients.
 26. Thesystem of claim 25 wherein the replacement channel filter coefficientsinclude channel filter coefficients not identified based on thethreshold criteria.
 27. A storage device storing a computer program forcreating a filter, the computer program comprising one or more codesegments that, when executed, cause at least one processor to: receive asignal including a data frame, and a gap occurring before the dataframe, the data frame including a data frame preamble, and the gap notincluding predetermined data; sample noise received during reception ofthe gap of the received signal; sample the data frame preamble of thedata frame of the received signal; compute filter coefficients based onthe noise sampled during reception of the gap and the data framepreamble sampled from the data frame; generate, based on the computedfilter coefficients, a filter; apply, in response to generation of thefilter, the filter to the data frame of the received signal; andforward, in response to application of the filter to the data frame ofthe received signal, the filtered data frame.
 28. The storage device ofclaim 27 wherein the one or more code segments that, when executed,cause at least one processor to: receive the signal comprise one or morecode segments that, when executed, cause at least one processor toreceive signals communicated across power lines; and apply the filter tothe data frame of the received signal comprise one or more code segmentsthat, when executed, cause at least one processor to apply the filter tothe data frame of the received signal across the power lines.
 29. Thestorage device of claim 27 wherein the computer program furthercomprises one or more code segments that, when executed, cause at leastone processor to synchronize the received signal to identify the dataframe preamble.
 30. The storage device of claim 29 wherein the one ormore code segments that, when executed, cause at least one processor tosynchronize the received signal comprise one or more code segments that,when executed, cause at least one processor to: sample a randomlylocated portion of the received signal; generate a pre-filter based onthe randomly located portion of the sampled received signal; apply thepre-filter to the received signal; and identify, in response toapplication of the pre-filter to the received signal, the data framepreamble.
 31. The storage device of claim 27 wherein the one or morecode segments that, when executed, cause at least one processor tocompute the filter coefficients comprise one or more code segments that,when executed, cause at least one processor to: generate noise filtercoefficients from the noise sampled during reception of the gap;generate channel filter coefficients from the data frame preamblesampled from the data frame; and generate the filter coefficients basedon the noise filter coefficients and the channel filter coefficients.32. The storage device of claim 31 wherein the one or more code segmentsthat, when executed, cause at least one processor to generate the noisefilter coefficients comprise one or more code segments that, whenexecuted, cause at least one processor to generate noise filtercoefficients from the noise sampled during reception of the gap and thedata frame preamble sampled from the data frame.
 33. The storage deviceof claim 31 wherein the one or more code segments that, when executed,cause at least one processor to generate the channel filter coefficientscomprise one or more code segments that, when executed, cause at leastone processor to: identify channel filter coefficients based on athreshold criteria; and update the channel filter coefficients that areidentified based on the threshold criteria.
 34. The storage device ofclaim 33 wherein the one or more code segments that, when executed,cause at least one processor to update the channel filter coefficientscomprise one or more code segments that, when executed, cause at leastone processor to perform an excision algorithm.
 35. The storage deviceof claim 33 wherein the one or more code segments that, when executed,cause at least one processor to update the channel filter coefficientscomprise one or more code segments that, when executed, cause at leastone processor to modify the channel filter coefficients.
 36. The storagedevice of claim 35 wherein the one or more code segments that, whenexecuted, cause at least one processor to modify the channel filtercoefficients comprise one or more code segments that, when executed,cause at least one processor to reduce a magnitude of the channel filtercoefficients that are identified based on the threshold criteria. 37.The storage device of claim 33 wherein the one or more code segmentsthat, when executed, cause at least one processor to update the channelfilter coefficients comprise one or more code segments that, whenexecuted, cause at least one processor to perform a smoothing algorithm.38. The storage device of claim 33 wherein the one or more code segmentsthat, when executed, cause at least one processor to update the channelfilter coefficients comprise one or more code segments that, whenexecuted, cause at least one processor to replace the channel filtercoefficients with replacement channel filter coefficients.
 39. Thestorage device of claim 38 wherein the replacement channel filtercoefficients include channel filter coefficients not identified based onthe threshold criteria.
 40. A method for adaptively filtering a dataframe of a received signal, the method comprising: receiving a signalincluding a data frame, and a gap occurring before the data frame, thedata frame including a data frame preamble, and the gap not includingpredetermined data; generating, using at least one processor,coefficients for an adaptive filter based on at least noise receivedduring reception of the gap and the data frame preamble of the dataframe by performing operations that include: sampling noise receivedduring reception of the gap of the received signal, sampling the dataframe preamble of the data frame of the received signal, and computingfilter coefficients based on the noise sampled during reception of thegap and the data frame preamble sampled from the data frame; applyingthe adaptive filter to the data frame; and forwarding, in response toapplication of the adaptive filter to the data frame, the filtered dataframe.
 41. The method of claim 40 wherein: receiving the signalcomprises receiving signals communicated across power lines; andapplying the filter to the first data frame of the received signalcomprises applying the filter to the data frame of the received signalacross the power lines.
 42. The method of claim 40 further comprisingsynchronizing the received signal to identify the data frame preamble.43. The method of claim 42 wherein synchronizing the received signalcomprises: sampling a randomly located portion of the received signal;generating a pre-filter based on the randomly located portion of thesampled received signal; applying the pre-filter to the received signal;and identifying, in response to application of the pre-filter to thereceived signal, the data frame preamble.
 44. The method of claim 40wherein computing the filter coefficients includes: generating noisefilter coefficients from the noise sampled during reception of the gap;generating channel filter coefficients from the data frame preamblesampled from the data frame; and generating the filter coefficientsbased on the noise filter coefficients and the channel filtercoefficients.
 45. The method of claim 44 wherein generating the noisefilter coefficients comprises generating noise filter coefficients fromthe noise sampled during reception of the gap and the data framepreamble sampled from the data frame.
 46. The method of claim 44 whereingenerating the channel filter coefficients includes: identifying channelfilter coefficients based on a threshold criteria; and updating thechannel filter coefficients that are identified based on the thresholdcriteria.
 47. The method of claim 46 wherein updating the channel filtercoefficients includes performing an excision algorithm.
 48. The methodof claim 46 wherein updating the channel filter coefficients includesmodifying the channel filter coefficients.
 49. The method of claim 48wherein modifying the channel filter coefficients includes reducing amagnitude of the channel filter coefficients that are identified basedon the threshold criteria.
 50. The method of claim 46 wherein updatingthe channel filter coefficients includes performing a smoothingalgorithm.
 51. The method of claim 46 wherein updating the channelfilter coefficients includes replacing the channel filter coefficientswith replacement channel filter coefficients.
 52. The method of claim 51wherein the replacement channel filter coefficients include channelfilter coefficients not identified based on the threshold criteria. 53.A system for adaptively filtering a data frame of a received signal, thesystem comprising at least one processor, wherein the at least oneprocessor is configured to: receive a signal including a data frame, anda gap occurring before the data frame, the data frame including a dataframe preamble, and the gap not including predetermined data; generatecoefficients for an adaptive filter based on at least noise receivedduring reception of the gap and the data frame preamble of the dataframe by performing operations that include: sampling noise receivedduring reception of the gap of the received signal, sampling the dataframe preamble of the data frame of the received signal, and computingfilter coefficients based on the noise sampled during reception of thegap and the data frame preamble sampled from the data frame; apply theadaptive filter to the data frame; and forward, in response toapplication of the adaptive filter to the data frame, the filtered dataframe.
 54. The system of claim 53 wherein the at least one processor isconfigured to: receive the signal by receiving signals communicatedacross power lines; and apply the filter to the data frame of thereceived signal by applying the filter to the data frame of the receivedsignal across the power lines.
 55. The system of claim 54 wherein the atleast one processor is further configured to synchronize the receivedsignal to identify the data frame preamble.
 56. The system of claim 55wherein the at least one processor is configured to synchronize thereceived signal by: sampling a randomly located portion of the receivedsignal; generating a pre-filter based on the randomly located portion ofthe sampled received signal; applying the pre-filter to the receivedsignal; and identifying, in response to application of the pre-filter tothe received signal, the data frame preamble.
 57. The system of claim 53wherein the at least one processor is configured to compute the filtercoefficients by: generating noise filter coefficients from the noisesampled during reception of the gap; generating channel filtercoefficients from the data frame preamble sampled from the data frame;and generating the filter coefficients based on the noise filtercoefficients and the channel filter coefficients.
 58. The system ofclaim 57 wherein the at least one processor is configured to generatethe noise filter coefficients by generating noise filter coefficientsfrom the noise sampled during reception of the gap and the data framepreamble sampled from the data frame.
 59. The system of claim 57 whereinthe at least one processor is configured to generate the channel filtercoefficients by: identifying channel filter coefficients based on athreshold criteria; and updating the channel filter coefficients thatare identified based on the threshold criteria.
 60. The system of claim59 wherein the at least one processor is configured to update thechannel filter coefficients by performing an excision algorithm.
 61. Thesystem of claim 59 wherein the at least one processor is configured toupdate the channel filter coefficients by modifying the channel filtercoefficients.
 62. The system of claim 61 wherein the at least oneprocessor is configured to modify the channel filter coefficients byreducing a magnitude of the channel filter coefficients that areidentified based on the threshold criteria.
 63. The system of claim 59wherein the at least one processor is configured to update the channelfilter coefficients by performing a smoothing algorithm.
 64. The systemof claim 59 wherein the at least one processor is configured to updatethe channel filter coefficients by replacing the channel filtercoefficients with replacement channel filter coefficients.
 65. Thesystem of claim 64 wherein the replacement channel filter coefficientsinclude channel filter coefficients not identified based on thethreshold criteria.
 66. A storage device storing a computer program foradaptively filtering a data frame of a received signal, the computerprogram comprising one or more code segments that, when executed, causeat least one processor to: receive a signal including a data frame, anda gap occurring before the data frame, the data frame including a dataframe preamble, and the gap not including predetermined data; generatecoefficients for an adaptive filter based on at least noise receivedduring reception of the gap and the data frame preamble of the dataframe by performing operations that include: sample noise receivedduring reception of the gap of the received signal, sample the dataframe preamble of the data frame of the received signal, and computefilter coefficients based on the noise sampled during reception of thegap and the data frame preamble sampled from the data frame; apply theadaptive filter to the data frame; and forward, in response toapplication of the adaptive filter to the data frame, the filtered dataframe.
 67. The storage device of claim 66 wherein the one or more codesegments that, when executed, cause at least one processor to: receivethe signal comprise one or more code segments that, when executed, causeat least one processor to receive signals communicated across powerlines; and apply the filter to the data frame of the received signalcomprise one or more code segments that, when executed, cause at leastone processor to apply the filter to the data frame of the receivedsignal across the power lines.
 68. The storage device of claim 66wherein the computer program further comprises one or more code segmentsthat, when executed, cause at least one processor to synchronize thereceived signal to identify the data frame preamble.
 69. The storagedevice of claim 68 wherein the one or more code segments that, whenexecuted, cause at least one processor to synchronize the receivedsignal comprise one or more code segments that, when executed, cause atleast one processor to: sample a randomly located portion of thereceived signal; generate a pre-filter based on the randomly locatedportion of the sampled received signal; apply the pre-filter to thereceived signal; and identify, in response to application of thepre-filter to the received signal, the data frame preamble.
 70. Thestorage device of claim 66 wherein computing the filter coefficientsincludes one or more code segments that when executed on the processorcause the processor to: generate noise filter coefficients from thenoise sampled during reception of the gap; generate channel filtercoefficients from the data frame preamble sampled from the data frame;and generate the filter coefficients based on the noise filtercoefficients and the channel filter coefficients.
 71. The storage deviceof claim 70 wherein the one or more code segments that, when executed,cause at least one processor to generate the noise filter coefficientscomprise one or more code segments that, when executed, cause at leastone processor to generate noise filter coefficients from the noisesampled during reception of the gap and the data frame preamble sampledfrom the data frame.
 72. The storage device of claim 70 wherein the oneor more code segments that, when executed, cause at least one processorto generate the channel filter coefficients comprise one or more codesegments that, when executed, cause at least one processor to: identifychannel filter coefficients based on a threshold criteria; and updatethe channel filter coefficients that are identified based on thethreshold criteria.
 73. The storage device of claim 72 wherein the oneor more code segments that, when executed, cause at least one processorto update the channel filter coefficients comprise one or more codesegments that, when executed, cause at least one processor to perform anexcision algorithm.
 74. The storage device of claim 72 wherein the oneor more code segments that, when executed, cause at least one processorto update the channel filter coefficients comprise one or more codesegments that, when executed, cause at least one processor to modify thechannel filter coefficients.
 75. The storage device of claim 74 whereinthe one or more code segments that, when executed, cause at least oneprocessor to modify the channel filter coefficients comprise one or morecode segments that, when executed, cause at least one processor toreduce a magnitude of the channel filter coefficients that areidentified based on the threshold criteria.
 76. The storage device ofclaim 72 wherein the one or more code segments that, when executed,cause at least one processor to update the channel filter coefficientscomprise one or more code segments that, when executed, cause at leastone processor to perform a smoothing algorithm.
 77. The storage deviceof claim 72 wherein the one or more code segments that, when executed,cause at least one processor to update the channel filter coefficientscomprise one or more code segments that, when executed, cause at leastone processor to replace the channel filter coefficients withreplacement channel filter coefficients.
 78. The storage device of claim77 wherein the replacement channel filter coefficients include channelfilter coefficients not identified based on the threshold criteria. 79.The method of claim 1 wherein computing the filter coefficients based onthe noise sampled during reception of the gap and the data framepreamble sampled from the data frame comprises computing the filtercoefficients based on an average of the coefficients derived from thenoise sampled during reception of the gap over a period of time.
 80. Themethod of claim 1 wherein computing the filter coefficients based on thenoise sampled during reception of the gap and the data frame preamblesampled from the data frame comprises computing the filter coefficientsbased on an average of the coefficients derived from the data framepreamble sampled from the data frame over a period of time.
 81. A methodof pre-filtering a received signal to improve synchronization, themethod comprising: receiving a signal including a data frame, and a gapoccurring before the data frame, the gap not including predetermineddata; sampling noise received during reception of the gap of thereceived signal; generating an adaptive noise-canceling filter based onthe sampled noise; applying the adaptive noise-canceling filter to thereceived signal; and identifying, in response to application of theadaptive noise-canceling filter, a data frame preamble of the receivedsignal.
 82. A system of pre-filtering a received signal to improvesynchronization, the system comprising at least one processor, whereinthe at least one processor is configured to: receive a signal includinga data frame, and a gap occurring before the data frame, the gap notincluding predetermined data; sample noise received during reception ofthe gap of the received signal; generate an adaptive noise-cancelingfilter based on the sampled noise; apply the adaptive noise-cancelingfilter to the received signal; and identify, in response to applicationof the adaptive noise-canceling filter, a data frame preamble of thereceived signal.
 83. The method of claim 1 wherein the gap comprises aninter-frame gap.
 84. The method of claim 1 wherein the data frame is afirst frame in a series of data frames.
 85. The system of claim 14wherein the gap comprises an inter-frame gap.
 86. The system of claim 14wherein the data frame is a first frame in a series of data frames. 87.The storage device of claim 27 wherein the gap comprises an inter-framegap.
 88. The storage device of claim 27 wherein the data frame is afirst frame in a series of data frames.
 89. The method of claim 40wherein the gap comprises an inter-frame gap.
 90. The method of claim 53wherein the data frame is a first frame in a series of data frames. 91.The system of claim 53 wherein the gap comprises an inter-frame gap. 92.The system of claim 53 wherein the data frame is a first frame in aseries of data frames.
 93. The storage device of claim 66 wherein thegap comprises an inter-frame gap.
 94. The storage device of claim 66wherein the data frame is a first frame in a series of data frames. 95.The method of claim 81 wherein the gap comprises an inter-frame gap. 96.The method of claim 81 wherein the data frame is a first frame in aseries of data frames.
 97. The system of claim 82 wherein the gapcomprises an inter-frame gap.
 98. The system of claim 82 wherein thedata frame is a first frame in a series of data frames.